package com.example.springbootdemo.advisor;

import com.example.springbootdemo.exception.BizException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;

/**
 * 当 Controller 出现异常的时候, 会被该类接收到(AOP), 根据 Controller 中具体方法所
 * 抛出的特定异常, 由和方法上@ExceptionHandler 中对应的异常相同的方法进行处理.
 */
@ControllerAdvice
public class ControllerExceptionAdvisor {

    // @ExceptionHandler 处理特定的异常
    @ResponseBody
    @ExceptionHandler(value = BizException.class)
    public Object handler(BizException bizException) {
        Map<String, Object> map = new HashMap<>();
        map.put("code", "-1");
        map.put("msg", bizException.getMessage());
        return map;
    }
}
